package com.flappySeeker.controller;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;

/**
 * MBTI相关常量
 * @author gdl
 *	规则二取一
 */
public class MBTI {
	
	public final static int TEST_COUNT=93;//题目数
	/**
	 * mbti 后台接收参数user-sel 
	 */
	public final static String TEST_SUFF="user-sel";//题结果参数
	
	public final static String E="E";//外向   高度热情地社交，反应快，喜欢快节奏
	public final static String I="I";//内向   喜欢深度而不是广度，独处时精力充沛
	
	public final static String S="S";//感觉  重视现实性和常情
	public final static String N="N";//直觉  重视可能性和独创性
	
	public final static String T="T";//思考 重视符合逻辑、公正、公平的价值；一视同仁
	public final static String F="F";//情感  重视同情与和睦：重视准则的例外性
	
	public final static String J="J";//判断  建立目标，准时地完成
	public final static String P="P";//感知  随着新信息的获取，不断改变目标

	
	
	public final static String ENTP="ENTP";//外倾直觉思维知觉
	public final static String ENFP="ENFP";//外倾直觉情感知觉
	
	public final static String ESFP="ESFP";//外倾感觉情感知觉
	public final static String ESTP="ESTP";//外倾感觉思维知觉
	
	public final static String ENTJ="ENTJ";//外倾直觉思维判断
	public final static String ENFJ="ENFJ";//外倾直觉情感判断
	
	public final static String ESFJ="ESFJ";//外倾感觉情感判断
	public final static String ESTJ="ESTJ";//外倾感觉思维判断
	
	public final static String INTP="INTP";//内倾直觉思维知觉
	public final static String INFP="INFP";//内倾直觉情感知觉
	
	public final static String ISFP="ISFP";//内倾感觉情感知觉
	public final static String ISTP="ISTP";//内倾感觉思维知觉
	
	public final static String INTJ="INTJ";//内倾直觉思维判断
	public final static String INFJ="INFJ";//内倾直觉情感判断
	
	public final static String ISFJ="ISFJ";//内倾感觉情感判断
	public final static String ISTJ="ISTJ";//内倾感觉思维判断
	
	private static Map<String, String> MBTI_MAP=null;//类型中文map
	private static Map<String, String> MBTI_CONTENT=null;//类型中文map
	private static Map<String, String> MBTI_SHORTMAP=null;//简单描述map
	
	/**
	 * 获得8中类型简单描述
	 * @return
	 */
	public static Map<String, String> getMbtiShortMap(){
		if(MBTI_SHORTMAP==null){
			MBTI_SHORTMAP=new HashMap<String, String>();
			MBTI_SHORTMAP.put(E,"高度热情地社交，反应快，喜欢快节奏");
			MBTI_SHORTMAP.put(I,"喜欢深度而不是广度，独处时精力充沛");
			MBTI_SHORTMAP.put(S,"重视现实性和常情");
			MBTI_SHORTMAP.put(N,"重视可能性和独创性");
			MBTI_SHORTMAP.put(T,"重视符合逻辑、公正、公平的价值；一视同仁");
			MBTI_SHORTMAP.put(F,"重视同情与和睦：重视准则的例外性");
			MBTI_SHORTMAP.put(J," 建立目标，准时地完成");
			MBTI_SHORTMAP.put(P,"随着新信息的获取，不断改变目标");
		}
		return MBTI_SHORTMAP;
	}
	
	/**
	 * 获得MBTI描述
	 * @return
	 */
	public static Map<String, String> getMbtiConten(){
		if(MBTI_CONTENT==null){
			MBTI_CONTENT=new HashMap<String, String>();
			String s = Constants.class.getClassLoader().getResource("/com/flappySeeker/template/mbti/").toString();
			File file = new File(s.substring(s.indexOf("/")));
			File[] files=file.listFiles();
			for (File f : files) {
				String fname =f.getName();
				try {
					MBTI_CONTENT.put(StringUtils.substring(fname,0,fname.indexOf(".")), 
							FileUtils.readFileToString(f, Constants.ENCODING_UTF8));
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return MBTI_CONTENT;
	}
	public static void main(String[] args) {
		Map<String, Integer> m=new HashMap<String, Integer>();
		System.out.println();
	}
	/**
	 * 获得中文类型map
	 * @return
	 */
	public static Map<String, String> getMbtiMap(){
		if(MBTI_MAP==null){
			MBTI_MAP=new HashMap<String, String>();
			MBTI_MAP.put(ENTP,"外倾直觉思维知觉");
			MBTI_MAP.put(ENFP,"外倾直觉情感知觉");
			MBTI_MAP.put(ESFP,"外倾感觉情感知觉");
			MBTI_MAP.put(ESTP,"外倾感觉思维知觉");
			
			MBTI_MAP.put(ENTJ,"外倾直觉思维判断");
			MBTI_MAP.put(ENFJ,"外倾直觉情感判断");
			MBTI_MAP.put(ESFJ,"外倾感觉情感判断");
			MBTI_MAP.put(ESTJ,"外倾感觉思维判断");
			
			MBTI_MAP.put(INTP,"内倾直觉思维知觉");
			MBTI_MAP.put(INFP,"内倾直觉情感知觉");
			MBTI_MAP.put(ISFP,"内倾感觉情感知觉");
			MBTI_MAP.put(ISTP,"内倾感觉思维知觉");
			
			MBTI_MAP.put(INTJ,"内倾直觉思维判断");
			MBTI_MAP.put(INFJ,"内倾直觉情感判断");
			MBTI_MAP.put(ISFJ,"内倾感觉情感判断");
			MBTI_MAP.put(ISTJ,"内倾感觉情感判断");
		}
		return MBTI_MAP;
	}
	
}
